这里我们简单问题复杂化,说几个编码
1 源文件编码
#coding=utf-8
#-*- coding: utf-8 -*-
这样的格式,那么源代码中的内容就会以指定的编码进行存取,比如解析源码中的字符串的时候
2 字符串编码
ustr = u’test中文’ 这个就是Unicode编码的字符串
varstr = ‘test中文’ 这个就是系统默认编码的字符串 用sys.getdefaultencoding()可以搞到
3 数据编码
文件存储编码,就是存储文件的时候什么格式,windows默认ansi,unix 默认utf8
文件内容编码,跟字符串编码相同,这个决定读取的数据如何转码
python文件写入的时候,会根据写入的内容确定数据的编码,举例:
手动将文件编码转换为ANSI,那么用python读取此文件内容然后写入另一个文件,则新写入的文件的编码为ANSI,可用NotePad++的格式菜单查看
手动将文件编码转换为UTF-8,那么用python读取此文件内容然后写入另一个文件,则新写入的文件的编码为UTF-8,可用NotePad++的格式菜单查看
如果单独写入字符串,python默认使用UTF8 无BOM的存储格式保存文件,文件的内容编码为UTF8
4 下面这堆就是浮云了:
python 中有两种字符串对象,str 和unicode
str类型是字节数组,unicode类型的是字符数组
简单举例,unicode 使用两个字节表示字符
strings = ‘“中文测试” #len(strings) = 8
stringu = u’”中文测试” #len(stringu) = 4
unicode是python编码转换的中间编码,有两个方法来做编码转换操作decode(encoding)和encode(encoding)
decode 是按照指定的编码对对象进行解码,解码的结果是unicode对象
encode是将unicode对象,按照指定的编码编码成相应的格式比如说gbk
str 对象是已经被编码过的对象,需要现将其按照指定编码进行解码成unicode,再转换成其他编码
python中从一个编码到另一个编码之间的转换都是先将对象解码为unicode 然后再将unicode对象编码为指定的编码
5 参考资料
- python读写不同编码txt文件
- Python字符集编码和文件读写
- 详解Python2.x中对Unicode编码的使用
- Python中的str与unicode处理方法
- PYTHON编码处理-str与Unicode的区别
- Unicode 码制转换问题
- 初探python编码
- python对16位unicode汉字处理
最后更新: 2022年03月02日 03:32
原始链接: http://rawbin-.github.io/encoding-decoding/2015-08-17-encoding-in-python/